package io.scnb.lesson001.demo4;

/**
 * scope="singleton" 单例bean是线程共享的，需要考虑线程安全问题
 * scope="prototype" 多例bean，每次获取的时候都会调用构造方法重新创建。如果bean比较复杂，创建时间比较长，会影响系统的性能
 * scope="request" 在一次http请求中，一个bean对应一个实例，每个http请求都会创建一个bean实例
 * scope="session" 每个会话对应一个bean实例
 * scope="application" 全局web应用中只有一个同名的bean实例（不论这个应用中创建了多少个spring容器）
 */
public class BeanScopeModel {

    // 该构造方法是在容器启动过程中调用的
    // 即该bean实例在容器启动过程中就创建好了，一直缓存在容器中
    public BeanScopeModel(String beanScope) {
        System.out.println(String.format("线程：%s, create BeanScopeModel,{scope=%s},{this=%s}", Thread.currentThread(), beanScope, this));
    }
}
